import { reactive } from 'vue'
import zhCN from './zh-CN.js'
import enUS from './en-US.js'

const messages = {
  'zh-CN': zhCN,
  'en-US': enUS
}

// 当前语言状态
const i18n = reactive({
  locale: 'zh-CN',
  messages: messages
})

// 获取翻译文本
export function t(key, params = {}) {
  const keys = key.split('.')
  let value = i18n.messages[i18n.locale]
  
  for (const k of keys) {
    if (value && typeof value === 'object') {
      value = value[k]
    } else {
      return key // 如果找不到翻译，返回原key
    }
  }
  
  if (typeof value !== 'string') {
    return key
  }
  
  // 替换参数
  return value.replace(/\{(\w+)\}/g, (match, param) => {
    return params[param] || match
  })
}

// 设置语言
export function setLocale(locale) {
  if (messages[locale]) {
    i18n.locale = locale
    // 触发自定义事件通知语言变更
    window.dispatchEvent(new CustomEvent('language-changed', { detail: locale }))
  }
}

// 获取当前语言
export function getLocale() {
  return i18n.locale
}

// 获取支持的语言列表
export function getSupportedLocales() {
  return Object.keys(messages)
}

// 导出i18n实例用于响应式
export { i18n }
